MatPL 可用参数
本节介绍了所有模型中可由用户定义的参数,可以分为基础参数和高级参数两类。基础参数需要用户指定,高级参数采用了默认值,用户可以在 json 文件中根据需求手动修改。在下面的参数中,"相对路径(relative path)" 表示相对于当前工作目录的路径,而 "绝对路径(absolute path)" 表示从根目录开始的文件或目录的完整路径。
基础参数
对于 MatPL 中的力场,只需要设置以下基础参数即可开始训练。
model_type
该参数用于指定用于训练的模型类型。您可以使用LINEAR
模型、NN
模型、DP
模型或 NEP
模型。
atom_type
该参数用于设置训练体系的元素类型。用户可以按照任意顺序指定元素的原子序数。例如,对于单元素系统如铜,可以设置为 [29],而对于多元素系统如 CH4,则可以设置为 [1, 6]。您也可以使用元素类型的名称,例如["Cu"] 或者 ["H", "C"]。
train_data
该参数用于指定训练集数据路径。您可以使用相对路径或绝对路径。
- 对于 DP 和 NEP 模型,支持的文件格式有
extxyz
、pwmlff/npy
、deepmd/npy
、deepmd/raw
、pwmat/movement
,vasp/outcar
,cp2k/md
- 对于 LINEAR 和 NN 模型,仅支持
pwmat/movement
格式
valid_data
该参数用于指定验证集数据路径。您可以使用相对路径或绝对路径。
- 对于 DP 和 NEP 模型,支持的文件格式有
extxyz
、pwmlff/npy
、deepmd/npy
、deepmd/raw
、pwmat/movement
,vasp/outcar
,cp2k/md
- 对于 LINEAR 和 NN 模型,仅支持
pwmat/movement
格式
test_data
该参数用于test
命令做推理时指定测试集数据路径。您可以使用相对路径或绝对路径。
- 对于 DP 和 NEP 模型,支持的文件格式有
extxyz
、pwmlff/npy
、deepmd/npy
、deepmd/raw
、pwmat/movement
,vasp/outcar
,cp2k/md
- 对于 LINEAR 和 NN 模型,仅支持
pwmat/movement
格式
format
该参数用于指定数据(train_data
、valid_data
、test_data
)的格式,支持的数据格式有扩展的xyz格式 extxyz
、pwmlff/npy
、deepmd/npy
、deepmd/raw
格式。此外也支持直接使用 PWmat, VASP, CP2K 轨迹文件, 对应 format
参数分别为 pwmat/movement
, vasp/outcar
, cp2k/md
。默认格式为 pwmat/movement
。细节请参考数据格式转换工具pwdata
。
注意,输入数据的格式需要一致。
model_load_file
该参数用于test
命令做推理时指定模型的路径,支持相对或者绝对路径。
recover_train
该参数用于从中断的训练任务中恢复训练。默认值为 true
reserve_work_dir
该参数用于LINEAR 或者 NN 模型,用于指定在任务执行完成后是否保留工作目录 work_dir
。默认值为 False
,意味着在执行完成后该目录将被删除。
模型超参数
用户只需要设置必要参数即可完成模型的训练、测试和相关分子动力学过程。相应的高级参数,如模型超参数和优化器超参数,将被设置为默认值。MatPL的可设置模型超参数如下。
NEP model
完整的 NEP 模型参数设置如下:
"model": {
"descriptor": {
"cutoff": [6.0,6.0],
"n_max": [4,4],
"basis_size": [12,12],
"l_max": [4,2,1],
"zbl": 2.0
},
"fitting_net": {
"network_size": 40
}
}
cutoff
该参数用于设置 radial
和 angular
的截断能。默认值为 [8.0, 4.0]
。
n_max
该参数用于设置 radial
和 angular
分别对应的描述符数量,该值不小于0,不大于 19,默认值为 [4, 4]
。
basis_size
该参数用于设置 radial
和 angular
对应的基组数量,该值不小于0,不大于 19默认值为 [8, 8]
。
l_max
该参数用于设置 angular 的展开阶,同时控制是否使用四体和五体描述符,默认值为 [4, 2, 1]
,分别是三体、四体以及五体 描述符 对应的阶。这里 2
表示使用四体 描述符,1
表示使用五体描述符。如果您只使用三体描述符,请设置为[4, 0, 0]
;只是用三体和四体描述符,请设置为[4, 2, 0]
。
NEP 两体描述符的数量为 n_max[0]+1;三体描述符的数量为 (n_max[1] + 1)*l_max[0],四体描述符、五体描述符数量相同,分别为 n_max[1] + 1。
network_size
该参数用于设置 NEP
模型中隐藏层神经元个数,在 NEP 模型中只有一层隐藏层,默认值为 40
。
zbl
该参数用于设置Ziegler-Biersack-Littmark (ZBL) 势,处理原子距离非常近的情况。默认不设置。该值的允许范围是 1.0 zbl 2.5。
DP model
DP 模型的完整参数设置如下:
"type_embedding":false,
"model": {
"type_embedding":{
"physical_property":["atomic_number", "atom_mass", "atom_radius", "molar_vol", "melting_point", "boiling_point", "electron_affin", "pauling"]
},
"descriptor": {
"Rmax": 6.0,
"Rmin": 0.5,
"M2": 16,
"network_size": [25,25,25]
},
"fitting_net": {
"network_size": [50,50,50,1]
}
}
type_embedding
该参数用于 DP 模型训练开启type embedding时设置相应参数。您也可以在'model'同级字典下设置"type_embedding":true
,此时将采用 ["atomic_number", "atom_radius", "atom_mass", "electron_affin", "pauling"]设置。默认值为false
,不开启type_embdding。
physical_property
该参数用于指定 DP
模型在做 type embedding 方式训练时需要的参数,我们这里提供了 8 个物理属性供用户选择。
- atomic_number: 原子序数
- atom_mass: 原子质量
- atom_radius: 原子半径
- molar_vol: 摩尔体积
- melting_point: 熔点
- boiling_point: 沸点
- electron_affin: 电子亲和能
- pauling 为泡林电负性
"physical_property" 默认值为 ["atomic_number", "atom_radius", "atom_mass", "electron_affin", "pauling"]
Rmax
DP 模型中平滑函数的最大截断半径。默认值为 。
Rmin
DP 模型中平滑函数的最小截断半径。默认值为 。
M2
该参数用于 DP 模型中的网络,确定嵌入网络的输出大小和拟合网络的输入大小。在示例中,嵌入网络的输出大小为(25 X 16),拟合网络的输入大小为(25 X 16 = 400)。默认值为 16。
network_size
该参数用于嵌入网络(embedding_net)和拟合网络(fitting_net)的结构。默认值分别为[25, 25, 25]和[50, 50, 50, 1]。对应的网络结构如下所示:
嵌入网络的结构: 输入层(输入数据维度)➡ 隐藏层 1(25 个神经元)➡ 隐藏层 2(25 个神经元)➡ 输出层 3(25 个神经元)
拟合网络的结构: 输入层(M2 X 25)➡ 隐藏层 1(50 个神经元)➡ 隐藏层 2(50 个神经元)➡ 隐藏层 3(50 个神经元)➡ 输出层(1 个神经元)
NN model
NN 模型的完整参数设置如下:
"model": {
"descriptor": {
"Rmax": 6.0,
"Rmin": 0.5,
"feature_type": [3,4]
},
"fitting_net": {
"network_size": [15,15,1]
}
}
Rmax
特征的最大截断半径。默认值为 。
Rmin
特征的最小截断半径。默认值为 。
feature_type
该参数用于特征类型。支持的选项有[1, 2]、[3, 4]、[5]、[6]、[7]和[8]。默认值为[3, 4],即 2-b 和 3-b 高斯特征。有关不同特征类型的更详细信息,请参考附录1。